home *** CD-ROM | disk | FTP | other *** search
- //: C23:Trmnator.cpp
- // From Thinking in C++, 2nd Edition
- // Available at http://www.BruceEckel.com
- // (c) Bruce Eckel 1999
- // Copyright notice in Copyright.txt
- // Use of set_terminate()
- // Also shows uncaught exceptions
- #include <exception>
- #include <iostream>
- #include <cstdlib>
- using namespace std;
-
- void terminator() {
- cout << "I'll be back!" << endl;
- abort();
- }
-
- void (*old_terminate)()
- = set_terminate(terminator);
-
- class Botch {
- public:
- class Fruit {};
- void f() {
- cout << "Botch::f()" << endl;
- throw Fruit();
- }
- ~Botch() { throw 'c'; }
- };
-
- int main() {
- try{
- Botch b;
- b.f();
- } catch(...) {
- cout << "inside catch(...)" << endl;
- }
- } ///:~
-